package proto

import (
	"regexp"
	D "websocket_apn/define"
	"websocket_apn/log"
)

/*
71 AB 00 00 02 8C 00 00 0E 74 00 00 02 D4 07 01 81 E2

	剩余挑战次数

08 00 12 30 08 02 10 D8 AB E9 BC A1 32 18 00 20 06 28 9A B0 0A 28 9B B0 0A 28 99 B0 0A 28 98 B0 0A 28 97 B0 0A 28 96 B0 0A 28 95 B0 0A 30 F7 9F D5 AA A1 32 1A BF 04

	排名                 ID                    名字                                                                战力

0A 40 08 01 12 3C 08 AE 86 E7 B4 C0 5A 12 0F E7 AE 80 E5 88 B6 E5 90 8D E5 A4 A7 E5 B8 9D       18 AE 05 22 0B 31 30 38 32 38 30 33 33 39 36 34 28 B4 E5 08 30 AC 4E 38 A3 E6 BD 01 40 D7 FA 06 48 00 50 00
0A 41 08 02 12 3D 08 BD D7 86 B5 C0 5A 12 10 F0 9F 8D 83 E8 80 81 E8 99 8E E5 B0 8F E7 B1 B3    18 BA 05 22 0B 31 31 34 36 37 30 30 32 36 34 38 28 97 E5 08 30 9A 4E 38 A3 E6 BD 01 40 D1 FA 06 48 06 50 00
0A 3D 08 03 12 39 08 C1 B3 91 B5 C0 5A 12 0C E8 83 A5 E5 A4 A9 E6 98 9F E5 90 9B                18 BF 05 22 0B 31 33 31 32 35 38 36 39 32 38 38 28 AB E5 08 30 AB 4E 38 A3 E6 BD 01 40 D1 FA 06 48 07 50 00

12 3D 08 03 12 39 08 C1 B3 91 B5 C0 5A 12 0C E8 83 A5 E5 A4 A9 E6 98 9F E5 90 9B                18 BF 05 22 0B 31 33 31 32 35 38 36 39 32 38 38 28 AB E5 08 30 AB 4E 38 A3 E6 BD 01 40 D1 FA 06 48 07 50 00
12 3F 08 04 12 3B 08 D6 E9 E4 B7 C0 5A 12 0F E6 98 9F E8 BE B0 E2 9C A8 E6 83 85 E4 BA BA       18 BC 05 22 0A 38 37 33 34 38 39 35 35 32 36    28 A6 E5 08 30 A7 4E 38 A9 E6 BD 01 40 D1 FA 06 48 05 50 00
12 3A 08 05 12 36 08 CE D5 E6 B4 C0 5A 12 0A F0 9F 8D 83 E9 B8 A3 E6 96 AF                      18 FC 04 22 0A 37 38 37 31 38 31 32 36 37 37    28 B4 E5 08 30 9F 4E 38 A3 E6 BD 01 40 D1 FA 06 48 05 50 00
12 3B 08 07 12 37 08 EA CE FE B7 C0 5A 12 0B E8 8A B1 E7 81 AB C2 B7 E6 98 9F                   18 8E 05 22 0A 37 34 31 32 34 30 35 35 39 39    28 CB E5 08 30 93 4E 38 A9 E6 BD 01 40 D7 FA 06 48 04 50 00
12 41 08 0A 12 3D 08 E2 83 86 B8 C0 5A 12 11 E8 8A B1 E7 81 AB C2 B7 E7 9A AE E7 9A AE E5 8D 8E 18 89 05 22 0A 36 34 35 34 37 39 31 37 35 37    28 CB E5 08 30 95 4E 38 A9 E6 BD 01 40 D1 FA 06 48 03 50 00
12 3D 08 0B 12 39 08 F9 DB E3 B4 C0 5A 12 0D F0 9F 8D 83 E6 91 B8 E9 B1 BC E5 95 A6 			18 BD 04 22 0A 34 30 31 30 30 38 32 35 39 34    28 A6 CB 08 30 93 4E 38 A3 E6 BD 01 40 D1 FA 06 48 02 50 00
20 0A 28 01

71 AB 00 00 02 59 00 00 0E 76 00 00 02D4 08 94 30 6F 08 00 12 BE 04
0A 43 08 01 12 3F 08 D6 AD D4 C6 C0 5A 12 12 E4 BA 91 E6 86 A9 E6 9C 88 E4 B8 8B E5 90 9F E2 9C 8C 18 DE 06 22 0B 33 37 38 30 37 33 38 39 30 33 35 28 A9 E5 08 30 AB 4E 38 C8 E6 BD 01 40 D1 FA 06 48 0A 50 00
0A 40 08 02 12 3C 08 92 9A DA C6 C0 5A 12 0F E4 BA 91 E6 86 A9 E5 A1 9E E5 B7 B4 E6 96 AF 18 96 06 22 0B 33 30 31 39 39 30 35 36 38 39 37 28 8C E5 08 30 AE 4E 38 C8 E6 BD 01 40 D1 FA 06 48 0A 50 00
0A 3E 08 03 12 3A 08 BC E2 C2 C4 C0 5A 12 0DE5 BC A5 E6 95 A6 E9 81 93 39 E5 8F B7 18 A5 06 22 0B 32 31 36 34 31 36 38 37 35 36 35 28 8D E5 08 30 AD 4E 38 C4 E6 BD 01 40 D7 FA 06 48 09 50 00
12 39 08 29 12 35 08 E9 BF FA C4 C0 5A 12 09 E8 B7 AF E6 BC AB E6 BC AB 18 DD 04 22 0A 35 3837 36 39 30 36 36 34 38 28 AB E5 08 30 A9 4E 38 C4 E6 BD 01 40 D1 FA 06 48 02 50 00
12 3F 08 2A 12 3B 08 A2 D6 C5 C6 C0 5A 12 0F E5 AE 81 E6 B3 A2 E8 A8 80 E6 89 BF E6 97 AD 18 CE 04 22 0A 34 34 37 36 38 30 34 38 35 34 28 A6 CB 08 3094 4E 38 C8 E6 BD 01 40 D1 FA 06 48 04 50 00
12 3F 08 35 12 3B 08 EC 96 C3 C6 C0 5A 12 0F E4 BA 91 E6 86 A9 E7 BE 8E E9 A3 9F E5 AE B6 18 AB 04 22 0A 33 38 37 37 32 30 32 34 30 34 28 CB E5 08 30 9A 4E 38 C8 E6 BD 01 40 D1 FA 06 48 03 50 00
12 42 08 3B 12 3E 08 D6 AB E3 C6 C0 5A 12 12 E4 BA 91 E6 86 A9 E5 8F AF E4 B9 90 E5 8A A0 E5 86 B0 18 9A 04 22 0A 33 31 32 34 31 39 30 37 36 31 28 A0 E5 08 30 94 4E 38 C8 E6 BD 01 40 D1 FA 06 48 02 50 00
12 42 08 40 12 3E 08 EF E0 D0 C4 C0 5A 12 12 E5 A4 8F E5 80 99 E5 86 9C E8 BE B0 E5 A4 A9 E5 B0 8A 18 8E 04 22 0A 31 37 34 32 37 32 31 39 39 32 28 CB E5 08 30 97 4E 38 C4 E6 BD 01 40 D1 FA 06 48 00 50 00
12 30 08 4A 12 26 08 00                12 0F 48 65 72 6F 52 61 6E 6B 5F 4E 61 6D 65 2D 32 18 63 22 06 33 39 35 32 38 30 28 BE CA 08 30 91 4E 38 00 18 A3 8D 06 20 29 18 01 20 40
*/
func ParaAllHeroInfo(dataBytes []byte) D.AllHeroInfo {
	allInfo := D.AllHeroInfo{
		FightCount: -1,
	}
	data := BytesToHexStr(dataBytes)
	if len(dataBytes) > 5 && dataBytes[0] == 0x08 && dataBytes[1] == 0x00 && dataBytes[2] == 0x12 && dataBytes[3] == 0x30 && dataBytes[4] == 0x08 {
		allInfo.FightCount = int(dataBytes[5])
	}
	// 定义正则表达式												    1排名                          2 ID                            3 名字                                              4 战力             5 28         6 30              7 18             8 20
	re := regexp.MustCompile(`(?:0A|12)[0-9a-fA-F]{2}08((?:[0-9A-F]{2}){1,2})12[0-9A-F]{2}08([0-9A-F]{12}|00)12[0-9A-F]{2}((?:[0-9A-F]{2})+?)18(?:[0-9A-F]{2}){1,2}22[0-9A-F]{2}((?:3[0-9])+?)28([0-9A-F]{6})30([0-9A-F]{4})38(?:0018([0-9A-F]{6})20([0-9A-F]{2})|(?:(?:[0-9A-F]{2})+?)48[0-9A-F]{2}50)`)
	res := re.FindAllStringSubmatch(data, -1)
	if len(res) == 0 {
		log.Errorf("解析数据失败-%s", data)
	}
	// 打印结果
	for _, regRes := range res {
		if len(regRes) > 1 {
			//log.Infof("%+v", regRes[1:])
			info := D.HeroInfo{
				Ranking:     int(ParaIntDataByHexStr(regRes[1])), //排名
				RankStr:     regRes[1],                           //排名字符串
				ID:          regRes[2],                           //ID
				Name:        HexDataStrToStr(regRes[3]),          //名字
				CombatValue: HexDataStrToInt64(regRes[4]),        //妖力
			}
			if info.Ranking == 0 {
				info.Ranking = 99999
			}
			if regRes[2] == "00" {
				info.NotHuman = true
				info.Name = "群英守卫"
				info.R28 = regRes[5]
				info.R30 = regRes[6]
				info.R18 = regRes[7]
				info.R20 = regRes[8]
			}
			log.Debugf("%3d [%s] 战力 %s %+v", info.Ranking, info.Name, D.GetCombatValueDesc(info.CombatValue), info)
			allInfo.Hero = append(allInfo.Hero, info)
		}
	}
	return allInfo
}
